package pack01;

import java.io.IOException;
import java.io.RandomAccessFile;

/**
 * @作者：JustOne
 * @时间：2021/8/12 - 19:06
 */
public class Demo02_读的五个方法 {
    public static void main(String[] args) throws IOException {

        //《读》
        //IS：即InputStream，是所有字节输入流的父类(抽象类)，它定义了基础的读取方法，常用方法有:
        //方法一：int readInt();//-----------读一个int
        //方法二：char raf.readChar();//-----读一个char
        //方法三：int read();//--------------读低8位，返回读到内容的int值(0-255)，若读到无可读字节则返回-1;
        //方法四：int read(byte[]);//--------读你给的容量，返回实际读到的容量，若读到无可读字节则返回-1;
        //方法五：int read(byte[],n,m);//----从第n项开始读，读m项。返回实际读到的容量，如果读到没有可读字节则返回-1;
        //
        //RAF读写文件是基于文件指针进行的，即：RAF总是在文件指针指向的文件位置进行读写字节。并且读写后指针会自动后移到下一个字节位置。
        //读出来的全部是二进制数字，无论是文本、图片、音乐、视频。如果想知道它的具体含义，需要通过它原来的编码方式进行复原。
        //创建RAF时需要指定权限。常用权限有r和rw。在r权限下如果你指定的文件不存在会报异常，在rw权限下如果你指定的文件不存在会自动创建。

        RandomAccessFile raf = new RandomAccessFile("D:/刘景景的测试文件夹/记事本.txt","rw");

        //方法一：int readInt();读一个整数
        //int a = raf.readInt();
        //System.out.println(a);


        //方法二：raf.writeChar();//-----读一个char
        //char c = raf.readChar();
        //System.out.println(c);


        //方法三：raf.read();//----------读低8位，返回读到内容的int值(0-255)，若读到无可读字节则返回-1;
        int a = raf.read();
        System.out.println(a);//82
        a = raf.read();
        System.out.println(a);//24
        a = raf.read();
        System.out.println(a);//-1
        //执行完可以看到输出的是0-255之间的数字，其实没有任何意义，因为只读了低8位


        //方法四：int read(byte[]);//读你给的容量，返回实际读到的容量，如果读到没有可读字节则返回-1;
        /*
        byte[] data = new byte[1024];
        int len = raf.read(data);
        System.out.println("读到的长度是："+len);//输出33，即实际读到的
        String str = new String(data,"UTF-8");
        System.out.println("读到的内容是："+str);
        */

        //方法五：int read(byte[],n,m);//把这个byte型数组的n-m项的内容读进去。返回实际读到的容量，如果读到没有可读字节则返回-1;
        /*
        byte[] data = new byte[52];
        int len = raf.read(data,3,6);//从数组的3开始装，装6个（也即是数组前面是空的，但指针依然是从0开始）
        System.out.println("读到的长度是："+len);//输出6，即实际读到的

        String str = new String(data,"UTF-8");
        System.out.println("读到的内容是："+str);
        */
        raf.close();

    }
}
